package com.sz.common.core.system.service;

import com.sz.common.core.system.entity.SysMail;

import java.util.Date;
import java.util.List;

/**
 * Function: SysMailService <br>
 * Author: Charles <br>
 * Date: 2016-11-29 14:04:00
 */
public interface SysMailService {
    /**
     * @param from    发送人邮件
     * @param to      接收人邮件列表
     * @param subject 邮件主题
     * @param content 邮件内容
     */
    long createMail(String from, String[] to, String subject, String content);

    /**
     * 新建邮件
     *
     * @param domainId      域Id
     * @param catalog       分类目录
     * @param from          发送人邮件
     * @param to            接收人邮件列表
     * @param cc            抄送人邮件列表
     * @param subject       邮件主题
     * @param content       邮件内容
     * @param priority      优先级
     * @param scheduledTime 定时发送时间R
     * @param template      发送邮件所使用的模板名称
     */
    long createMail(int domainId, String catalog, String from, String[] to, String[] cc,
                    String subject, String content, int priority, Date scheduledTime, String template);

    /**
     * 获取mail
     *
     * @param id mail Id
     * @return
     */
    SysMail getMailById(long id);

    /**
     * 获取所有为发送的邮件Id列表
     *
     * @param domainId 域Id
     * @return
     */
    List<Long> getUnsentMails(int domainId);

    /**
     * @param mailId  mailId
     * @param success 是否发送成功
     * @param errorCode
     */
    void updateSentResult(long mailId, boolean success, String errorCode,String errorMsg);

    /**
     *
     * @return
     */
    List<SysMail> getAllNeedSentMails();

    /**
     *
     * @param from          发送人邮件
     * @param to            接收人邮件列表
     * @param subject       邮件主题
     * @param content       邮件内容
     * @param templateName  使用的email模板名称
     */
    long createMail(String from, String[] to, String subject, String content, String templateName);

    /**
     *
     * @param mailId
     * @param errorCode
     */
    void setMailFailStatus(long mailId,String errorCode,String errorMsg);
}
